1
Переход от потоков к экземплярам программы
AI023Lesson 4
00:00

В Triton основной единицей выполнения является не скалярный поток CUDA, а экземпляр программы. Это абстракция блока потоков GPU, где один экземпляр одновременно обрабатывает векторизованный «блок» элементов.

1. Идентичность экземпляра программы

Каждая единица выполнения получает свою идентификацию через pid = tl.program_id(axis=0). Представьте себе грузовую погрузочную машину на складе (экземпляр программы), которая поднимает поддон (блок) из 128 ящиков, в отличие от одного работника (потока CUDA), который поднимает один ящик.

2. Triton против тензоров PyTorch

Понимание семантического разрыва имеет решающее значение для управления памятью:

  • Тензор PyTorch: Объект на стороне хоста на языке Python, обёртка для хранения видеопамяти (VRAM), шагов и метаданных.
  • Тензор Triton: Объект уровня компилятора, представляющий значения или указатели, находящиеся в регистрах или SRAM.
Вид тензора PyTorch
Объект на языке Python, указывающий на непрерывную глобальную память.
Вид тензора Triton
Двумерный/одномерный блок данных внутри регистров компилятора.

3. Характеристика SPMD

Triton следует модели единой программы, множественных данных (SPMD) выполнения. Каждый экземпляр программы выполняет точно такой же код. Разветвление происходит только тогда, когда логика использует pid для вычисления конкретных смещений памяти.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>